local UnitlModule = require("Lua.UnitlModule");

--第十二节 一些特别用法

UnitlModule.PrintTimer();

--#region 多脚本赋值与多返回值
UnitlModule.PrintOperaName("多脚本赋值与多返回值");

a,b,c,d= "a","b",3;
print(a,b,c,d);
a,b = "A","B",3;
print(a,b);

function Return_Value()
    return "A","B",66;
end
a,b,c = Return_Value();
print(a,b,c);

function Return_Value_Less()
    return "A","B";
end
a,b,c = Return_Value_Less();
print(a,b,c);
--[[
    没什么好说的，对于赋值和多个返回值来说，
    如果供大于需，则自动省略多的供给部分，
    反之则给过多的需求置nil
--]]
--#endregion

UnitlModule.PrintOperaName("and or和三目运算符");

print(1 and 2);
print(nil and true);
print(true and false);

print(0 or 1);
print(nil or true);
--[[
在Lua中，逻辑或，逻辑与，这两个玩意，不仅可以连接boolean，也能连接其他任何东西
lua中，只有nil 和 false 才是假，其他都是真


“短路”：对于 and 来说，有假则假，对于 or 来说，有真则真
所以这两个玩意只需要判断第一个是否满足就会停止计算了

(条件)?(true):(false);
--]]

--利用“短路”制作的三目运算符
x = false;
y = "b";
local res = (x == y) and "A" or "B";
print(res);
--最好的三目运算符
function  Ternary(condition,trueVal,falseVal)
    if condition then 
        return trueVal;
    else
        return falseVal;
    end
end